home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 32 / Mac Magazin and MacEasy Magazine CD - Issue 32.iso / Grafik & Text / OzTeX3.0 / Metafont / Inputs / cm / circle.mf < prev    next >
Text File  |  1996-03-25  |  10KB  |  552 lines

  1. fontdimen 1: 0,0,0,0,0,0,0,thickness#;
  2. font_coding_scheme:="LaTeX circle";
  3.  
  4. let cmchar=\; % cmchar should precede each character, for testing purposes
  5.  
  6. thickness:=ceiling(thickness#*hppp); % the way rules thicknesses are done
  7. % thickness#:=thickness/hppp; % and let thickness# round to right value
  8. % NO, I deleted this BAD line! --- DEK, 9 Jul 87
  9. pickup pencircle scaled thickness; nib:=savepen;
  10.  
  11. % arcs sets up the points 1, 2, ..., 8 as follows:
  12. %
  13. %            |1
  14. %            |*
  15. %            * *
  16. %           8|  2
  17. %          * |   *
  18. %        7*  |    *3
  19. %        --*-----*--
  20. %           6|  4
  21. %            * *
  22. %            |5
  23. %
  24. %        <----w---->
  25.  
  26. pair upleft,upright,downleft,downright;
  27. upright=-downleft=(1,1); downright=-upleft=(1,-1);
  28.  
  29. % a quarter-circle has width, height and depth set as explained on
  30. % page 389 of the TeXbook, not the real width, height, and depth
  31.  
  32. def qbeginchar (expr c, diam_sharp) =
  33. numeric hh, dd; hh:=.5*(diam_sharp+thickness#);
  34. dd:=.5*(diam_sharp-thickness#);
  35. beginchar(c,diam_sharp,hh,dd);
  36. enddef;
  37.  
  38. def arcs =
  39. numeric delta;
  40. delta:=.5 round((1-sqrt.5)*w); % distance from axis to arc's 45 degree points
  41. bot y3=0; y7=y3=.5[y5,y1]; y1-y5=w;
  42. lft x1=0; x5=x1=.5[x7,x3]; x3-x7=w;
  43. x2-x1=delta; x1-x8=delta; x8=x6; x2=x4;
  44. y8-y7=delta; y7-y6=delta; y8=y2; y6=y4;
  45. enddef;
  46.  
  47. cmchar "2pt, top right";
  48. qbeginchar(0,4pt#);
  49. numeric delta;
  50. pickup nib;
  51. arcs;
  52. draw z7{right}..z6{downright}..z5{down};
  53. endchar;
  54.  
  55. cmchar "2pt, bottom right";
  56. qbeginchar(1,4pt#);
  57. numeric delta;
  58. pickup nib;
  59. arcs;
  60. draw z1{down}..z8{downleft}..z7{left};
  61. endchar;
  62.  
  63. cmchar "2pt, bottom left";
  64. qbeginchar(2,4pt#);
  65. numeric delta;
  66. pickup nib;
  67. arcs;
  68. draw z3{left}..z2{upleft}..z1{up};
  69. endchar;
  70.  
  71. cmchar "2pt, top left";
  72. qbeginchar(3,4pt#);
  73. numeric delta;
  74. pickup nib;
  75. arcs;
  76. draw z5{up}..z4{upright}..z3{right};
  77. endchar;
  78.  
  79. cmchar "4pt, top right";
  80. qbeginchar(4,8pt#);
  81. numeric delta;
  82. pickup nib;
  83. arcs;
  84. draw z7{right}..z6{downright}..z5{down};
  85. endchar;
  86.  
  87. cmchar "4pt, bottom right";
  88. qbeginchar(5,8pt#);
  89. numeric delta;
  90. pickup nib;
  91. arcs;
  92. draw z1{down}..z8{downleft}..z7{left};
  93. endchar;
  94.  
  95. cmchar "4pt, bottom left";
  96. qbeginchar(6,8pt#);
  97. numeric delta;
  98. pickup nib;
  99. arcs;
  100. draw z3{left}..z2{upleft}..z1{up};
  101. endchar;
  102.  
  103. cmchar "4pt, top left";
  104. qbeginchar(7,8pt#);
  105. numeric delta;
  106. pickup nib;
  107. arcs;
  108. draw z5{up}..z4{upright}..z3{right};
  109. endchar;
  110.  
  111. cmchar "6pt, top right";
  112. qbeginchar(8,12pt#);
  113. numeric delta;
  114. pickup nib;
  115. arcs;
  116. draw z7{right}..z6{downright}..z5{down};
  117. endchar;
  118.  
  119. cmchar "6pt, bottom right";
  120. qbeginchar(9,12pt#);
  121. numeric delta;
  122. pickup nib;
  123. arcs;
  124. draw z1{down}..z8{downleft}..z7{left};
  125. endchar;
  126.  
  127. cmchar "6pt, bottom left";
  128. qbeginchar(10,12pt#);
  129. numeric delta;
  130. pickup nib;
  131. arcs;
  132. draw z3{left}..z2{upleft}..z1{up};
  133. endchar;
  134.  
  135. cmchar "6pt, top left";
  136. qbeginchar(11,12pt#);
  137. numeric delta;
  138. pickup nib;
  139. arcs;
  140. draw z5{up}..z4{upright}..z3{right};
  141. endchar;
  142.  
  143. cmchar "8pt, top right";
  144. qbeginchar(12,16pt#);
  145. numeric delta;
  146. pickup nib;
  147. arcs;
  148. draw z7{right}..z6{downright}..z5{down};
  149. endchar;
  150.  
  151. cmchar "8pt, bottom right";
  152. qbeginchar(13,16pt#);
  153. numeric delta;
  154. pickup nib;
  155. arcs;
  156. draw z1{down}..z8{downleft}..z7{left};
  157. endchar;
  158.  
  159. cmchar "8pt, bottom left";
  160. qbeginchar(14,16pt#);
  161. numeric delta;
  162. pickup nib;
  163. arcs;
  164. draw z3{left}..z2{upleft}..z1{up};
  165. endchar;
  166.  
  167. cmchar "8pt, top left";
  168. qbeginchar(15,16pt#);
  169. numeric delta;
  170. pickup nib;
  171. arcs;
  172. draw z5{up}..z4{upright}..z3{right};
  173. endchar;
  174.  
  175. cmchar "10pt, top right";
  176. qbeginchar(16,20pt#);
  177. numeric delta;
  178. pickup nib;
  179. arcs;
  180. draw z7{right}..z6{downright}..z5{down};
  181. endchar;
  182.  
  183. cmchar "10pt, bottom right";
  184. qbeginchar(17,20pt#);
  185. numeric delta;
  186. pickup nib;
  187. arcs;
  188. draw z1{down}..z8{downleft}..z7{left};
  189. endchar;
  190.  
  191. cmchar "10pt, bottom left";
  192. qbeginchar(18,20pt#);
  193. numeric delta;
  194. pickup nib;
  195. arcs;
  196. draw z3{left}..z2{upleft}..z1{up};
  197. endchar;
  198.  
  199. cmchar "10pt, top left";
  200. qbeginchar(19,20pt#);
  201. numeric delta;
  202. pickup nib;
  203. arcs;
  204. draw z5{up}..z4{upright}..z3{right};
  205. endchar;
  206.  
  207. cmchar "12pt, top right";
  208. qbeginchar(20,24pt#);
  209. numeric delta;
  210. pickup nib;
  211. arcs;
  212. draw z7{right}..z6{downright}..z5{down};
  213. endchar;
  214.  
  215. cmchar "12pt, bottom right";
  216. qbeginchar(21,24pt#);
  217. numeric delta;
  218. pickup nib;
  219. arcs;
  220. draw z1{down}..z8{downleft}..z7{left};
  221. endchar;
  222.  
  223. cmchar "12pt, bottom left";
  224. qbeginchar(22,24pt#);
  225. numeric delta;
  226. pickup nib;
  227. arcs;
  228. draw z3{left}..z2{upleft}..z1{up};
  229. endchar;
  230.  
  231. cmchar "12pt, top left";
  232. qbeginchar(23,24pt#);
  233. numeric delta;
  234. pickup nib;
  235. arcs;
  236. draw z5{up}..z4{upright}..z3{right};
  237. endchar;
  238.  
  239. cmchar "14pt, top right";
  240. qbeginchar(24,28pt#);
  241. numeric delta;
  242. pickup nib;
  243. arcs;
  244. draw z7{right}..z6{downright}..z5{down};
  245. endchar;
  246.  
  247. cmchar "14pt, bottom right";
  248. qbeginchar(25,28pt#);
  249. numeric delta;
  250. pickup nib;
  251. arcs;
  252. draw z1{down}..z8{downleft}..z7{left};
  253. endchar;
  254.  
  255. cmchar "14pt, bottom left";
  256. qbeginchar(26,28pt#);
  257. numeric delta;
  258. pickup nib;
  259. arcs;
  260. draw z3{left}..z2{upleft}..z1{up};
  261. endchar;
  262.  
  263. cmchar "14pt, top left";
  264. qbeginchar(27,28pt#);
  265. numeric delta;
  266. pickup nib;
  267. arcs;
  268. draw z5{up}..z4{upright}..z3{right};
  269. endchar;
  270.  
  271. cmchar "16pt, top right";
  272. qbeginchar(28,32pt#);
  273. numeric delta;
  274. pickup nib;
  275. arcs;
  276. draw z7{right}..z6{downright}..z5{down};
  277. endchar;
  278.  
  279. cmchar "16pt, bottom right";
  280. qbeginchar(29,32pt#);
  281. numeric delta;
  282. pickup nib;
  283. arcs;
  284. draw z1{down}..z8{downleft}..z7{left};
  285. endchar;
  286.  
  287. cmchar "16pt, bottom left";
  288. qbeginchar(30,32pt#);
  289. numeric delta;
  290. pickup nib;
  291. arcs;
  292. draw z3{left}..z2{upleft}..z1{up};
  293. endchar;
  294.  
  295. cmchar "16pt, top left";
  296. qbeginchar(31,32pt#);
  297. numeric delta;
  298. pickup nib;
  299. arcs;
  300. draw z5{up}..z4{upright}..z3{right};
  301. endchar;
  302.  
  303. cmchar "18pt, top right";
  304. qbeginchar(32,36pt#);
  305. numeric delta;
  306. pickup nib;
  307. arcs;
  308. draw z7{right}..z6{downright}..z5{down};
  309. endchar;
  310.  
  311. cmchar "18pt, bottom right";
  312. qbeginchar(33,36pt#);
  313. numeric delta;
  314. pickup nib;
  315. arcs;
  316. draw z1{down}..z8{downleft}..z7{left};
  317. endchar;
  318.  
  319. cmchar "18pt, bottom left";
  320. qbeginchar(34,36pt#);
  321. numeric delta;
  322. pickup nib;
  323. arcs;
  324. draw z3{left}..z2{upleft}..z1{up};
  325. endchar;
  326.  
  327. cmchar "18pt, top left";
  328. qbeginchar(35,36pt#);
  329. numeric delta;
  330. pickup nib;
  331. arcs;
  332. draw z5{up}..z4{upright}..z3{right};
  333. endchar;
  334.  
  335. cmchar "20pt, top right";
  336. qbeginchar(36,40pt#);
  337. numeric delta;
  338. pickup nib;
  339. arcs;
  340. draw z7{right}..z6{downright}..z5{down};
  341. endchar;
  342.  
  343. cmchar "20pt, bottom right";
  344. qbeginchar(37,40pt#);
  345. numeric delta;
  346. pickup nib;
  347. arcs;
  348. draw z1{down}..z8{downleft}..z7{left};
  349. endchar;
  350.  
  351. cmchar "20pt, bottom left";
  352. qbeginchar(38,40pt#);
  353. numeric delta;
  354. pickup nib;
  355. arcs;
  356. draw z3{left}..z2{upleft}..z1{up};
  357. endchar;
  358.  
  359. cmchar "20pt, top left";
  360. qbeginchar(39,40pt#);
  361. numeric delta;
  362. pickup nib;
  363. arcs;
  364. draw z5{up}..z4{upright}..z3{right};
  365. endchar;
  366.  
  367. % The full circles have height and depth 0pt because otherwise there
  368. % are too many heights and depths for the TFM files
  369.  
  370. cmchar "1pt, circle";
  371. beginchar(96,1pt#,0pt#,0pt#);
  372. pickup nib;
  373. draw fullcircle scaled w;
  374. endchar;
  375.  
  376. cmchar "2pt, circle";
  377. beginchar(97,2pt#,0pt#,0pt#);
  378. pickup nib;
  379. draw fullcircle scaled w;
  380. endchar;
  381.  
  382. cmchar "3pt, circle";
  383. beginchar(98,3pt#,0pt#,0pt#);
  384. pickup nib;
  385. draw fullcircle scaled w;
  386. endchar;
  387.  
  388. cmchar "4pt, circle";
  389. beginchar(99,4pt#,0pt#,0pt#);
  390. pickup nib;
  391. draw fullcircle scaled w;
  392. endchar;
  393.  
  394. cmchar "5pt, circle";
  395. beginchar(100,5pt#,0pt#,0pt#);
  396. pickup nib;
  397. draw fullcircle scaled w;
  398. endchar;
  399.  
  400. cmchar "6pt, circle";
  401. beginchar(101,6pt#,0pt#,0pt#);
  402. pickup nib;
  403. draw fullcircle scaled w;
  404. endchar;
  405.  
  406. cmchar "7pt, circle";
  407. beginchar(102,7pt#,0pt#,0pt#);
  408. pickup nib;
  409. draw fullcircle scaled w;
  410. endchar;
  411.  
  412. cmchar "8pt, circle";
  413. beginchar(103,8pt#,0pt#,0pt#);
  414. pickup nib;
  415. draw fullcircle scaled w;
  416. endchar;
  417.  
  418. cmchar "9pt, circle";
  419. beginchar(104,9pt#,0pt#,0pt#);
  420. pickup nib;
  421. draw fullcircle scaled w;
  422. endchar;
  423.  
  424. cmchar "10pt, circle";
  425. beginchar(105,10pt#,0pt#,0pt#);
  426. pickup nib;
  427. draw fullcircle scaled w;
  428. endchar;
  429.  
  430. cmchar "11pt, circle";
  431. beginchar(106,11pt#,0pt#,0pt#);
  432. pickup nib;
  433. draw fullcircle scaled w;
  434. endchar;
  435.  
  436. cmchar "12pt, circle";
  437. beginchar(107,12pt#,0pt#,0pt#);
  438. pickup nib;
  439. draw fullcircle scaled w;
  440. endchar;
  441.  
  442. cmchar "13pt, circle";
  443. beginchar(108,13pt#,0pt#,0pt#);
  444. pickup nib;
  445. draw fullcircle scaled w;
  446. endchar;
  447.  
  448. cmchar "14pt, circle";
  449. beginchar(109,14pt#,0pt#,0pt#);
  450. pickup nib;
  451. draw fullcircle scaled w;
  452. endchar;
  453.  
  454. cmchar "15pt, circle";
  455. beginchar(110,15pt#,0pt#,0pt#);
  456. pickup nib;
  457. draw fullcircle scaled w;
  458. endchar;
  459.  
  460. cmchar "1pt, blob";
  461. beginchar(112,1pt#,0pt#,0pt#);
  462. pickup pencircle scaled w;
  463. drawdot origin;
  464. endchar;
  465.  
  466. cmchar "2pt, blob";
  467. beginchar(113,2pt#,0pt#,0pt#);
  468. pickup pencircle scaled w;
  469. drawdot origin;
  470. endchar;
  471.  
  472. cmchar "3pt, blob";
  473. beginchar(114,3pt#,0pt#,0pt#);
  474. pickup pencircle scaled w;
  475. drawdot origin;
  476. endchar;
  477.  
  478. cmchar "4pt, blob";
  479. beginchar(115,4pt#,0pt#,0pt#);
  480. pickup pencircle scaled w;
  481. drawdot origin;
  482. endchar;
  483.  
  484. cmchar "5pt, blob";
  485. beginchar(116,5pt#,0pt#,0pt#);
  486. pickup pencircle scaled w;
  487. drawdot origin;
  488. endchar;
  489.  
  490. cmchar "6pt, blob";
  491. beginchar(117,6pt#,0pt#,0pt#);
  492. pickup pencircle scaled w;
  493. drawdot origin;
  494. endchar;
  495.  
  496. cmchar "7pt, blob";
  497. beginchar(118,7pt#,0pt#,0pt#);
  498. pickup pencircle scaled w;
  499. drawdot origin;
  500. endchar;
  501.  
  502. cmchar "8pt, blob";
  503. beginchar(119,8pt#,0pt#,0pt#);
  504. pickup pencircle scaled w;
  505. drawdot origin;
  506. endchar;
  507.  
  508. cmchar "9pt, blob";
  509. beginchar(120,9pt#,0pt#,0pt#);
  510. pickup pencircle scaled w;
  511. drawdot origin;
  512. endchar;
  513.  
  514. cmchar "10pt, blob";
  515. beginchar(121,10pt#,0pt#,0pt#);
  516. pickup pencircle scaled w;
  517. drawdot origin;
  518. endchar;
  519.  
  520. cmchar "11pt, blob";
  521. beginchar(122,11pt#,0pt#,0pt#);
  522. pickup pencircle scaled w;
  523. drawdot origin;
  524. endchar;
  525.  
  526. cmchar "12pt, blob";
  527. beginchar(123,12pt#,0pt#,0pt#);
  528. pickup pencircle scaled w;
  529. drawdot origin;
  530. endchar;
  531.  
  532. cmchar "13pt, blob";
  533. beginchar(124,13pt#,0pt#,0pt#);
  534. pickup pencircle scaled w;
  535. drawdot origin;
  536. endchar;
  537.  
  538. cmchar "14pt, blob";
  539. beginchar(125,14pt#,0pt#,0pt#);
  540. pickup pencircle scaled w;
  541. drawdot origin;
  542. endchar;
  543.  
  544. cmchar "15pt, blob";
  545. beginchar(126,15pt#,0pt#,0pt#);
  546. pickup pencircle scaled w;
  547. drawdot origin;
  548. endchar;
  549.  
  550. bye
  551.  
  552.